<?php

 require_once(FRAMEWORK_DIR."/libraries/phputf8/utf8.php");
 require_once(FRAMEWORK_DIR."/libraries/phputf8/ucfirst.php");
	NTable::addIncludePath(FRAMEWORK_DIR."/libraries/neocasta/taxonomy/tables");
class NHelperTaxonomy{
/** 
* @see import_categoriess()
*/
function add_category($name,$parentname){
	NHelperTaxonomy::add_taxonomy($name,$parentname);
}
/**
* @see import_get()
*/ 
function add_geo($name){
	NHelperTaxonomy::add_taxonomy($name,'','geo');

}
/**
* @description добавляет значение в taxonomy structure
* @see add_category()
* @see add_geo()
*/
function add_taxonomy($name,$parentname='',$taxonomy='category'){
$db = NFactory::getDBO();
$name = utf8_strtolower($name);
$name =  trim($name,"\x22\x27 .");
$oTermTable = NTable::getInstance('term');
$oTermTable->name = $name;

/* загружаем если есть шаблон с именем */
$db->loadTable($oTermTable,'name');
	
if (!$oTermTable->term_id){
	$oTermTable->slug=$name;
	$oTermTable->store();
}

if ($oTermTable->term_id){

/* Taxonomy*/
	$oTermTaxonomyTable = NTable::getInstance('termtaxonomy');
	$oTermTaxonomyTable->term_id=$oTermTable->term_id;
	
		$_sql = "SELECT * FROM #__term_taxonomy WHERE term_id=".$oTermTable->term_id." and taxonomy='$taxonomy'";
		$db->setQuery($_sql,0,1);
		$oResult = $db->loadObject();
		
	$oTermTaxonomyTable->term_taxonomy_id=$oResult->term_taxonomy_id;
	$db->loadTable($oTermTaxonomyTable);
	if ($parentname){
	$parentname = utf8_strtolower($parentname);
	$parentname =  trim($parentname,"\x22\x27 .");

	/* рекурсивнье выхывание функции для родительской дириктории  */
	$oTermTaxonomyTable->parent=NHelperTaxonomy::add_taxonomy($parentname,'',$taxonomy);
	}
	/* или insert или update в зависимости от существования term_taxonomy_id */
	$oTermTaxonomyTable->taxonomy=$taxonomy;
	$oTermTaxonomyTable->store();
	
	$term_taxonomy_id=$oTermTaxonomyTable->term_taxonomy_id;
	/* уничтожает объект */
	unset($oTermTaxonomyTable);


}
/* уничтожаем объект */
unset($oTermTable);

return $term_taxonomy_id;
}

function AssignByTerm($termname,$objectid,$taxonomy="category"){
	$termname = utf8_strtolower($termname);
	$termname =  trim($termname,"\x22\x27 .");

	$db = NFactory::getDBO();
	$_sql = "SELECT t.name , tx.term_taxonomy_id FROM #__term as t JOIN  #__term_taxonomy as tx on tx.term_id=t.term_id WHERE tx.taxonomy='$taxonomy' AND  t.name='$termname'";
	//echo $_sql;
	$db->setQuery($_sql);
	$oTermTaxonomy = $db->loadObject();
	//print_r($oTermTaxonomy);
	
	NHelperTaxonomy::AssignTaxonomy($oTermTaxonomy->term_taxonomy_id,$objectid);
	


	
}
function AssignTaxonomy($taxonomy_id,$objectid){
/* assign taxonomy_id and object*/
	$db = NFactory::getDBO();
	if (!$taxonomy_id) return;
	$_sql = "SELECT * FROM #__term_relationships WHERE object_id=".$objectid." and  term_taxonomy_id=".$taxonomy_id;
	$db->setQuery($_sql,0,1);
	$oRelationShip = $db->loadObject();
	
	if (!$oRelationShip){
	
	$_sql = "INSERT INTO #__term_relationships SET object_id=".$objectid.", term_taxonomy_id=".$taxonomy_id;
	
	$db->setQuery($_sql);
	$db->query();
	$term_taxonomy_id = $db->get_insert_id();

	}
}
function getTerm($term_id,$taxonomy=''){
	$_sql = "SELECT t.name,t.slug,tx.* FROM #__term t join #__term_taxonomy tx on t.term_id=tx.term_id WHERE tx.term_taxonomy_id=$term_id";
	
	$db = NFactory::getDBO();
	$db->setQuery($_sql,0,1);
	return $db->loadObject();
}

function is_term($term, $taxonomy = ''){
return NWPTaxonomy::is_term($term,$taxonomy);

}
function insert_term( $term, $taxonomy, $args = array() ){
	return NWPTaxonomy::wp_insert_term($term, $taxonomy, $args);
}
}
?>
